package com.donkingliang.imageselectdemo;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;

import com.donkingliang.imageselectdemo.adapter.ImageAdapter;
import com.donkingliang.imageselector.utils.ImageSelector;

import java.io.File;
import java.util.ArrayList;

import top.zibin.luban.Luban;
import top.zibin.luban.OnCompressListener;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

	private static final int REQUEST_CODE = 0x00000011;


	private ArrayList<String> mImages;//用于存放图片的地址
	private Context mContext = this;
	private RecyclerView rvImage;
	private ImageAdapter mAdapter;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		rvImage = findViewById(R.id.rv_image);
		rvImage.setLayoutManager(new GridLayoutManager(this, 3));
		mAdapter = new ImageAdapter(this);
		rvImage.setAdapter(mAdapter);

		findViewById(R.id.btn_single).setOnClickListener(this);
		findViewById(R.id.btn_limit).setOnClickListener(this);
		findViewById(R.id.btn_unlimited).setOnClickListener(this);
		findViewById(R.id.btn_clip).setOnClickListener(this);
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		if (requestCode == REQUEST_CODE && data != null) {
			ArrayList<String> images = data.getStringArrayListExtra(ImageSelector.SELECT_RESULT);//使用Arraylist存储选择到的图片路径
			boolean isCameraImage = data.getBooleanExtra(ImageSelector.IS_CAMERA_IMAGE, false);
			//            Log.d("ImageSelector", "是否是拍照图片：" + isCameraImage);
			//            mAdapter.refresh(images);
			y_Luban(images);

		}
	}

	//存放鲁班压缩完后的图片你可以不写但是为了看效果所以就先这么写着
	private String getPath() {
		String path = Environment.getExternalStorageDirectory() + "/Luban/image/";
		File file = new File(path);
		if (file.mkdirs()) {
			return path;
		}
		return path;
	}


	private void y_Luban(final ArrayList<String> images) {
		Luban.with(mContext)
				.load(images)
				.setTargetDir(getPath())
				.ignoreBy(100)
				.setCompressListener(new OnCompressListener() {
					@Override
					public void onStart() {

					}

					@Override
					public void onSuccess(File file) {

						mAdapter.refresh(images);//将图片更新到recyview上面去


					}

					@Override
					public void onError(Throwable e) {

					}
				}).launch();
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
			case R.id.btn_single:
				//单选
				//                ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, true, 0);
				ImageSelector.builder()
						.useCamera(true) // 设置是否使用拍照
						.setSingle(true)  //设置是否单选
						.setViewImage(true) //是否点击放大图片查看,，默认为true
						.start(this, REQUEST_CODE); // 打开相册
				break;

			case R.id.btn_limit:
				//多选(最多9张)
				//                ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 9);
				//                ImageSelector.builder().setSingle(true).start(this,REQUEST_CODE);
				//                ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 9, mAdapter.getImages()); // 把已选的传入。
				ImageSelector.builder()
						.useCamera(true) // 设置是否使用拍照
						.setSingle(false)  //设置是否单选
						.setViewImage(true) //是否点击放大图片查看,，默认为true
						.setMaxSelectCount(9) // 图片的最大选择数量，小于等于0时，不限数量。
						.start(this, REQUEST_CODE); // 打开相册
				break;

			case R.id.btn_unlimited:
				//多选(不限数量)
				//                ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE);
				//                ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, mAdapter.getImages()); // 把已选的传入。
				//或者
				//                ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 0);
				//                ImageSelectorUtils.openPhoto(MainActivity.this, REQUEST_CODE, false, 0, mAdapter.getImages()); // 把已选的传入。

				ImageSelector.builder()
						.useCamera(true) // 设置是否使用拍照
						.setSingle(false)  //设置是否单选
						.setViewImage(true) //是否点击放大图片查看,，默认为true
						.setMaxSelectCount(0) // 图片的最大选择数量，小于等于0时，不限数量。
						.start(this, REQUEST_CODE); // 打开相册
				break;

			case R.id.btn_clip:
				//单选并剪裁
				//                ImageSelectorUtils.openPhotoAndClip(MainActivity.this, REQUEST_CODE);
				ImageSelector.builder()
						.useCamera(true) // 设置是否使用拍照
						.setCrop(true)  // 设置是否使用图片剪切功能。
						.setSingle(true)  //设置是否单选
						.setViewImage(true) //是否点击放大图片查看,，默认为true
						.start(this, REQUEST_CODE); // 打开相册
				break;
		}
	}

}
